home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0257
/
doc.exe
/
DATETIME.DOC
< prev
next >
Wrap
Text File
|
1992-02-02
|
11KB
|
295 lines
─────────────────────────────────────────────────────────────────────────────
Dokumentation zur Datei: DATETIME.INC
─────────────────────────────────────────────────────────────────────────────
DATETIME.INC - Routinen zur Zeit- und Datumbehandlung
(für den Assembler A86)
(c) Bernd Schemmer 1990 - 1992
Letzter Update: 02.02.1992
■ Beschreibung:
---------------
Alle Routinen ermitteln die Uhrzeit und das Datum über die
Funktionen des DOS-Interrupts 21h.
Die Routinen benutzen das Register AX als Arbeitsregister.
■ Variablen:
------------
DATETIME stellt folgende Variablen zur Verfügung:
Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag
und
Januar, Februar, Maerz, April, Mai, Juni, Juli,
August, September, Oktober, November, Dezember
Alle genannten Variablen sind vom Typ String und enthalten den ent-
sprechenden Wochentags- bzw. Monatsnamen in Stringform.
ALLE Variablen sind READ-ONLY !!!
■ Routinen:
-----------
StartTimer - Startet die Stopuhr und speichert die Startzeit
StopTimer - Beendet die Stopuhr und speichert die Stopzeit
Berechne_Laufzeit - Berechnet die Laufzeit der Stopuhr und speichert
die ermittelte Laufzeit
SetTime - Setzt die Systemzeit
SetDate - Setzt das Systemdatum
GetTime - Ermittelt die Systemzeit
GetDate - Ermittelt das Systemdatum
KonvertTime - Konvertiert eine Zeitangabe in ein Stringformat
KonvertDate - Konvertiert eine Datumsangabe in ein Stringformat
■ Aufbau der Zeit-Tabelle
Die Routinen StartTimer, StopTimer und Berechne_Laufzeit erwarten
in DS:BX einen Zeiger auf eine Tabelle mit folgendem Aufbau
(Länge = 12xD Byte):
Offset | Länge | Inhalt
--------+----------+-----------------------
0 | 1 Byte | Minuten der Startzeit
1 | 1 Byte | Stunden der Startzeit
2 | 1 Byte | Hundertstel der Startzeit
3 | 1 Byte | Sekunden der Startzeit
| |
4 | 1 Byte | Minuten der Endzeit
5 | 1 Byte | Stunden der Endzeit
6 | 1 Byte | Hundertstel der Endzeit
7 | 1 Byte | Sekunden der Endzeit
| |
8 | 1 Byte | Minuten der Laufzeit
9 | 1 Byte | Stunden der Laufzeit
10 | 1 Byte | Hundertstel der Laufzeit
11 | 1 Byte | Sekunden der Laufzeit
Die Tabelle wird von den Routinen StartTimer, StopTimer und
Berechne_Laufzeit gefüllt (d.h. die aufrufende Routine muß
nur den Speicherplatz bereitstellen.)
Definition der Tabelle
ZeitTabelle STRUC [BX]
zeit1_s DW ; Puffer für die Startzeit (als Byte)
minuten_s DB 0
stunden_s DB 0
zeit2_s DW
hunderts_s DB 0
sekunden_s DB 0
zeit1_e DW ; Puffer für die Endzeit (als Byte)
minuten_e DB 0
stunden_e DB 0
zeit2_e DW
hunderts_e DB 0
sekunden_e DB 0
zeit1_l DW ; Puffer für die Laufzeit (als Byte)
minuten_l DB 0
stunden_l DB 0
zeit2_l DW
hunderts_l DB 0
sekunden_l DB 0
ENDS
----------------------------
StartTimer
Funktion: Ermitteln der System-Zeit und speichern dieser in
der Zeit-Tabelle (->> Starten der Stopuhr)
Eingabe: DS:BX zeigt auf einen Puffer für die Zeit-Tabelle
AL = 0FF ->> Keine String-Konvertierung der Startzeit
AL <> 0FF ->> String-Konvertierung der Startzeit
ES:DI -> String-Puffer
AL = 0 ->> String-Aufbau: HH:MM:SS:HH
AL = 1 ->> String-Aufbau: HH:MM:SS
AL = 2 ->> String-Aufbau: HH Uhr MM
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
----------------------------
StopTimer
Funktion: Ermitteln der System-Zeit und speichern dieser in
der Zeit-Tabelle (->> Stoppen der Stopuhr)
Eingabe: DS:BX zeigt auf eine Zeit-Tabelle
AL = 0FF ->> Keine String-Konvertierung der Stopzeit
AL <> 0FF ->> String-Konvertierung der Stopzeit
ES:DI -> String-Puffer
AL = 0 ->> String-Aufbau: HH:MM:SS:HH
AL = 1 ->> String-Aufbau: HH:MM:SS
AL = 2 ->> String-Aufbau: HH Uhr MM
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
----------------------------
Berechne_Laufzeit
Funktion: Ermitteln der Laufzeit der Stopuhr und speichern
dieser in der Zeit-Tabelle
Eingabe: DS:BX -> von StartTimer und StopTimer gefüllte Zeit-Tabelle
AL = 0FF ->> Keine String-Konvertierung der Laufzeit
AL <> 0FF ->> String-Konvertierung der Laufzeit
ES:DI -> String-Puffer
AL = 0 ->> String-Aufbau: HH:MM:SS:HH
AL = 1 ->> String-Aufbau: HH:MM:SS
AL = 2 ->> String-Aufbau: HH Uhr MM
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
Ausgabe: CF = 0 ->> okay
Laufzeit in der Tabelle berechnet
CF = 1 ->> Fehler
Endzeit ist größer als die Startzeit
Der Inhalt der Felder für die Laufzeit
in der Tabelle ist undefiniert!
Bes.: Berücksichtigt keinen Tagesüberlauf
Falls die Felder für die Start- und die Endzeit in der
Zeit-Tabelle manuell gefüllt werden (also NICHT durch
einen Aufruf von Starttimer und Stoptimer), kann mit
dieser Routine auch die Differenz zwischen zwei Zeiten
berechnet werden.
----------------------------
SetTime
Funktion: Setzen der Systemzeit
Eingabe: DS:SI -> String mit der Zeit
Format: HH:MM{:SS{:HH}}
jeweils mit führenden Nullen und beliebigen
Trennzeichen, die Voreinstellung für die
Sekunden und Hundertstel Sekunden ist 0
Ausgabe: CF = 1 ->> Fehler aufgetreten
CF = 0 ->> okay
Bes.: Überprüft wird nur, ob die Stunden, Minuten, Sekunden und
Hundertstel Sekunden im korrektem Intervall liegen
Die Routine prüft anhand der Länge des Strings, ob die
Sekunden und Hundertstel Sekunden angegeben sind oder nicht.
----------------------------
SetDate
Funktion: Setzen des Systemdatums
Eingabe: DS:SI -> String mit dem Datum
String-Aufbau: TT.MM.JJJJ
oder: TT.MM.JJ
Jeweils mit führenden Nullen und beliebigen Trenn-
zeichen. Die Voreinstellung für das Jahrhundert ist
1900.
Ausgabe: CF = 1 ->> Fehler aufgetreten
CF = 0 ->> okay
Bes.: Überprüft wird nur, ob der Tag im Bereich 0..31, der
Monat im Bereich 0..12 und das Jahr größer als
1980 ist. Die Routine überprüft anhand der Länge des
Strings, ob das Jahr als 19JJ oder JJ angegeben ist.
----------------------------
KonvertDate
Funktion: Konvertiert ein Datum zu einen String
Eingabe: ES:DI -> String-Puffer für das Datum
DL = Tag
DH = Monat
CX = Jahr
AL = 0 ->> String-Aufbau: TT.MM.JJ
AL <> 0 ->> String-Aufbau: TT.MM.JJJJ
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
Bes.: Das Datum wird nicht überprüft.
----------------------------
GetDate
Funktion: Ermittelt das Systemdatum und legt es als String ab
Eingabe: ES:DI -> String-Puffer für das Datum
AL = 0 ->> String-Aufbau: TT.MM.JJ
AL = 1 ->> String-Aufbau: TT.MM.JJJJ
AL = 2 ->> String-Aufbau: tag_name, der TT.MM.JJJJ
AL = 3 ->> String-Aufbau: tag_name, der TT. monat_name JJJJ
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
Sonntag DB 7xD, 'Sonntag' ; Wochentage
Montag DB 6xD, 'Montag'
Dienstag DB 8xD, 'Dienstag'
Mittwoch DB 8xD, 'Mittwoch'
Donnerstag DB 10xD,'Donnerstag'
Freitag DB 7xD, 'Freitag'
Samstag DB 7xD, 'Samstag'
Januar DB 6xD,'Januar' ; Monatsnamen
Februar DB 7xD,'Februar'
Maerz DB 4xD,'März'
April DB 5xD,'April'
Mai DB 3xD,'Mai'
Juni DB 4xD,'Juni'
Juli DB 4xD,'Juli'
August DB 6xD,'August'
September DB 9xD,'September'
Oktober DB 7xD,'Oktober'
November DB 8xD,'November'
Dezember DB 8xD,'Dezember'
----------------------------
KonvertTime
Funktion: Konvertiert eine Zeitangabe in ein Stringformat
Eingabe: ES:DI -> String-Puffer für die Zeit
CH = Stunden
CL = Minuten
DH = Sekunden
DL = Hundertstel Sekunden
AL = 0 ->> String-Aufbau: HH:MM:SS:HH
AL = 1 ->> String-Aufbau: HH:MM:SS
AL = 2 ->> String-Aufbau: HH Uhr MM
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben
Bes.: Die Zeitangabe wird nicht überprüft.
----------------------------
GetTime
Funktion: Ermittelt das Systemdatum und legt es als String ab
Eingabe: ES:DI -> String-Puffer für die Zeit
AL = 0 ->> String-Aufbau: HH:MM:SS:HH
AL = 1 ->> String-Aufbau: HH:MM:SS
AL = 2 ->> String-Aufbau: HH Uhr MM
AH <> 0 ->> Unterdrücke führende Nullen
AH = 0 ->> Führende Nullen mit ausgeben